from redis import StrictRedis
import logging



class Config(object):

    """配置文件的加载"""

    # 项目秘钥：CSRF/session，还有其他的一些签名算法会用
    SECRET_KEY ='KEERJIAZU941624@'

    # 开启调试模式
    DEBUG = True

    # 配置MySQL数据库连接信息，真是开发中，要使用mysql数据库真实的IP
    SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/flask_news"
    #
    SQLALCHEMY_TRACK_MODIFICATIONS = False

    # 配置redis数据库
    redis_host = '127.0.0.1'
    redis_port = 6379


    # 指定存储session数据的数据库类型为Redis
    SESSION_TYPE = 'redis'

    # 指定session数据存储到的位置
    SESSION_REDIS = StrictRedis(host=redis_host,port=redis_port)
    # 是否使用Secret_key签名你的session
    SESSION_USE_SIGNER = True
    # 设置过期时间，要求SESSION_PERMANENT，Ture,而默认就是31天
    PERMANENT_SESSION_LIFETIME = 60*60*24 #一天有效期




#以下代码是封装不同开发环境下的配置信息
class DevlopnentConfig(Config):

        """开发环境"""
        # 开发环境日志等级
        LEVEL_LOG = logging.DEBUG

class ProductionConfig(Config):
        """生产环境"""
        DEBUG = False
        SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/flask_news"
        # 生产环境日志等级
        LEVEL_LOG = logging.ERROR
class UnittestConfig(Config):
        """测试环境"""

        TESTING = True
        SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/flask_news"
        # 测试环境日志等级
        LEVEL_LOG = logging.DEBUG


# 定义字典，存储关键字对应的不同的配置类的类名
configs = {
    'dev':DevlopnentConfig,
    'pro':ProductionConfig,
    'unit':UnittestConfig
}